#!/bin/bash
# petteriIII 10.2.2016
unset asso; declare -A asso
function MatrixMin () { eval echo \${$1[*]} | awk 'BEGIN { min="";RS=" "}{ if (min=="") min=$1; if ($1<min) min=$1 }END{ print min}' ;} # toimii tavallisille sekä yksi- ja moniulotteisille" assosiatiivisille
function MatrixMax () { eval echo \${$1[*]} | awk 'BEGIN { max="";RS=" "}{ if (max=="") max=$1; if ($1>max) max=$1 }END{ print max}' ;} # toimii tavallisille sekä yksi- ja "moniulotteisille" assosiatiivisille
for n in {1..100000}; do let asso[$(( RANDOM*40/32768 ))]++ ; done ; echo ${asso[*]} | awk 'BEGIN {RS=" "}{sum+=$1; sumsq+=$1*$1}END {printf "%s\n", "assosiatiivisen matriisin keskipoikkeama="sqrt(sumsq/NR - (sum/NR)^2)"    keskiarvo="sum/NR}'
for n in {1..100000}; do let asso[$((((RANDOM<<15)|RANDOM)*40/1073741824))]++ ; done ; echo ${asso[*]} | awk 'BEGIN {RS=" "}{sum+=$1; sumsq+=$1*$1}END {printf "%s\n", "assosiatiivisen matriisin keskipoikkeama="sqrt(sumsq/NR - (sum/NR)^2)"    keskiarvo="sum/NR}'
min=$( MatrixMin asso)
echo -n 'assosiatiivisen matriisin minimi        ='$min' ja sitä vastaava osoite:';for (( n=1; n<=${#asso[@]}; n++ )); do [[ ${asso[$n]} = $min ]] && echo $n && break; done
max=$( MatrixMax asso)
echo -n 'assosiatiivisen matriisin maximi        ='$max' ja sitä vastaava osoite:';for (( n=1; n<=${#asso[@]}; n++ )); do [[ ${asso[$n]} = $max ]] && echo $n && break; done
